package com.lanou3g.ptp.commons;

import com.lanou3g.ptp.utils.DateUtils;
import org.apache.commons.io.IOUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 创建人: 武奇
 * 创建事件: 2019/8/5
 * 选择某个时间段内的所有工作日
 */
public class WorkdayDateHandler implements TaskDateHandler {

    private Date startDate;
    private Date endDate;


    public WorkdayDateHandler(Date startDate, Date endDate) {
        this.startDate = startDate;
        this.endDate = endDate;
    }

    @Override
    public List<Date> dispose() {
        List<Date> dateList = new ArrayList<>();
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(startDate);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endDate);
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        while (!DateUtils.isSameDay(startCalendar, endCalendar)){
            Date day = startCalendar.getTime();
            String dayString = format.format(day);
            String url = "http://tool.bitefu.net/jiari/?d="+dayString;
            String sendGET = SendGET(url);
            if (sendGET.equals("\"0\"")){
                dateList.add(day);
            }
            startCalendar.add(Calendar.DATE, 1);

        }

        return dateList;

    }
    public static String SendGET(String url){
        String result="";//访问返回结果
        BufferedReader read=null;//读取访问结果

        try {
            //创建url
            URL realurl=new URL(url);
            //打开连接
            URLConnection connection=realurl.openConnection();

            //建立连接
            connection.connect();

            // 定义 BufferedReader输入流来读取URL的响应
            read = new BufferedReader(new InputStreamReader(
                    connection.getInputStream(),"UTF-8"));
            String line;//循环读取
            while ((line = read.readLine()) != null) {
                result += line;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(read!=null){//关闭流
                try {
                    read.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return result;
    }
}
